﻿using System;
using AccesoData;
using Entidades;
using Logica.Interfaces;

namespace Logica.Comandos.Ramo
{
    public class ComandoAgregarTipoRamo: Comando, IAgregable
    {
        private readonly Comando _comando;
        
        #region Constructor

        public ComandoAgregarTipoRamo()
        {
            _comando = FComandos.ComandoRamo().Agregar();
        }

        #endregion
        #region Overrides of Comando

        public override void Ejecutar()
        {
            throw new NotImplementedException();
        }

        #endregion

        #region Implementation of IAgregable

        public int Ejecutar(Aseguradora aseguradora)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Cliente cliente)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Inspeccion inspeccion, Aseguradora aseguradora)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Lugar lugar)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Personal personal)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Poliza poliza)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Recaudo recaudo)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(RecaudoInspeccion recaudoInspeccion)
        {
            throw new NotImplementedException();
        }


        public int Ejecutar(Entidad recaudo, Entidad ramo)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(DetalleEstimado detalle)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Siniestro siniestro)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Sucursal sucursal)
        {
            throw new NotImplementedException();
        }

        #endregion

        /// <summary>
        /// asigna una causa a un ramo en la base de datos
        /// </summary>
        /// <param name="ramo"></param>
        /// <returns></returns>
        public int Ejecutar(Entidades.Ramo ramo)
        {
            try
            {
                ramo.Id = ((ComandoAgregarRamo)_comando).Ejecutar(ramo);
                ramo.RamoTipo.Id = ((ComandoAgregarRamo)_comando).Ejecutar(ramo.RamoTipo);

                return DAO.ObtenerFabrica(1).ObtenerDaoRamo().AgregarTipoRamo(ramo,ramo.RamoTipo);
            }
            catch (Exception)
            {
                return -1;
            }
        }
        
    }
}
